# -*- coding: utf-8 -*-
"""
@Time    : 2024/9/13 14:27 
@Author  : ZhangShenao 
@File    : 1.@property装饰器.py 
@Desc    : @property装饰器

为了更好地实现类的封装性,对于私有的属性,通常建议命名以单下划线_开头
这样以暗示属性是受保护的,外部不应该直接访问
对于受保护的属性,应该通过getter(访问器)和setter(修改器)来进行访问
可以使用@property装饰器来包装getter和setter方法:
@property: getter方法
@属性名.setter: setter方法

"""
from person import Person

if __name__ == '__main__':
    # 创建Person对象
    tom = Person(name="Tom", age=5)
    # 通过getter方法,获取属性值
    print(f"name: {tom.name}, age: {tom.age}")
    tom.watch()

    jerry = Person(name="Jerry", age=4)
    # 通过setter方法,修改属性值
    jerry.age = 20
    # name属性没有声明setter方法,所以无法修改
    # jerry.name = "jerry2"  # AttributeError: property 'name' of 'Person' object has no setter
    print(f"name: {jerry.name}, age: {jerry.age}")
    jerry.watch()
